export default {
    transformFile(file) {
        //promise执行多步操作非常好用，这个过程是有一定的顺序的，你必须保证上一步完成，才能顺利进行下一步。
        //有两个参数 resolve同意的意思  reject拒绝的意思
        return new Promise(resolve => {
            const reader = new FileReader();//创建读取文件对象
            reader.readAsDataURL(file);//调用方法转base64
            reader.onload = () => { //文件读取成功完成的触发
                const canvas = document.createElement('canvas'); //新建canvas 画布
                const img = document.createElement('img'); //新建一个img标签
                img.src = reader.result; //读取结果 下载图片
                img.onload = () => { //绑定事件 下载完成
                    const ctx = canvas.getContext('2d');//获取画笔对象
                    let width = img.width; //图片的宽高
                    let height = img.height;
                    canvas.width = width;//画布的宽高
                    canvas.height = height;
                    ctx.drawImage(img, 0, 0, width, height);//绘制图像 图片大小没变
                    ctx.fillStyle = '#ffffff';// 设置填充字号和字体，样式
                    ctx.textBaseline = 'middle';
                    // 设置右对齐
                    ctx.textAlign = 'right'
                    ctx.rotate(0 * Math.PI / 180);//旋转画笔 角度
                    ctx.globalAlpha = 0.4; //透明度
                    if (2000000 < width * height && width * height < 4000000) {
                        ctx.font = "80px Arial";
                    } else if (width * height > 4000000) {
                        ctx.font = "100px Arial";  // 设置文本大小和字体
                        ctx.fillText('仅 供 测 试 使 用', width / 1.5, height / 8); //绘制填充文本(str,x,y) 填充字体的 坐标
                        ctx.fillText('仅 供 测 试 使 用', width - 20, height - 20);// 在指定位置绘制文字，这里指定距离右下角20坐标的地方
                    } else {
                        ctx.font = "30px Arial";
                    }
                    ctx.fillText('仅 供 测 试 使 用', width / 8, height / 8);
                    ctx.fillText('仅 供 测 试 使 用', width - 20, height - 20);// 在指定位置绘制文字，这里指定距离右下角20坐标的地方
                    /* canvas.toBlob(resolve); */
                    //压缩图片质量 范围 0~1
                    let dataUrl = canvas.toDataURL("image/jpeg", 0.5) //输出压缩后的base64
                    //执行下一步操作  将裁剪base64的图片转换为file文件
                    resolve(this.dataURLtoFile(dataUrl, file.name))
                };
            };
        });
    },
    dataURLtoFile(dataurl, filename) {
        let arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new File([u8arr], filename, { type: mime });
    },


}